﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SIMCPresenter;
using SIMCObjetoNegocio;
using System.Data;
using System.Globalization;


public partial class WebUserControls_ResumenPortafolio : System.Web.UI.UserControl, IResumenPortafolioView
{
    private ResumenPortafolioPresenter m_Presenter;
    public event EventHandler<SearchEventArgs<PortafolioSearchCriteria>> MostrarBalance;
    private MembershipUsuario usuario;
    private CultureInfo myCulture = new CultureInfo("es-VE");

    protected override void OnInit(EventArgs e)
    {

        base.OnInit(e);
        m_Presenter = new ResumenPortafolioPresenter(this);
        usuario = ((MembershipUsuario)Session["Usuario"]);

    }
    
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DateTime fecha= new DateTime(2009, 10, 31);

            if (((SessionVariable)Session["variable"]).FechaPortafolio != null) 
            {
                fecha = ((SessionVariable)Session["variable"]).FechaPortafolio;
            }
           
            txtFecha.Text = (fecha).ToString("dd/MM/yyyy");
            PortafolioSearchCriteria Busqueda = new PortafolioSearchCriteria(fecha)
            {
                NombreUsuarioExterno = usuario.UserName
            };

            MostrarBalance(null, new SearchEventArgs<PortafolioSearchCriteria>(Busqueda));
        }
    }

    public TipoPortafolioCollection ListaTipoPortafolio
    {
        set
        {
           
            List<TipoPortafolio> TiposPortafolio = value.TiposPortafolio;
            List<Portafolio> TipoPortafolios = new List<Portafolio>(); 

            foreach (TipoPortafolio item in TiposPortafolio)
            {

                GridView portafolios = new GridView();

                List<Portafolio> portafolio = value.ObtenerPorEstadoAsociacion(item.codigo,EstadoPortafolioUsuario.Aprobado);

                if (portafolio.Count > 0)
                {
                    portafolios.DataSource = portafolio;

                    portafolios.AutoGenerateColumns = false;

                    BoundField TipoPortafolio = new BoundField();                   

                    HyperLinkField Alias = new HyperLinkField();                   

                    Alias.DataTextField = "Alias";
                    Alias.HeaderText = "Portafolio";

                    BoundField Divisa = new BoundField();
                    Divisa.HeaderText = "Divisa";
                    Divisa.DataField = "DivisaBase";

                    HyperLinkField Valor = new HyperLinkField();
                    Valor.HeaderText = "Valor";
                    Valor.DataTextField = "PatrimonioNeto";

                    Valor.DataTextFormatString = "{0:n}";

                    BoundField Id = new BoundField();

                    Id.DataField = "Id";

                    BoundField Asociacion = new BoundField();

                    Asociacion.DataField = "IdAsociacionUsuarioExterno";

                    portafolios.Columns.Add(TipoPortafolio);
                    portafolios.Columns.Add(Alias);
                    portafolios.Columns.Add(Divisa);
                    portafolios.Columns.Add(Valor);
                    portafolios.Columns.Add(Id);
                    portafolios.Columns.Add(Asociacion);

                    tblPortafolios.Rows[0].Cells[0].Controls.Add(portafolios);

                    portafolios.Columns[0].ItemStyle.CssClass = "mRow";
                    portafolios.Columns[0].ItemStyle.ForeColor = System.Drawing.Color.White;
                    portafolios.Columns[0].ItemStyle.BackColor = System.Drawing.ColorTranslator.FromHtml("#c9ccd3");
                    portafolios.Columns[1].ItemStyle.CssClass = "mRows";
                    portafolios.Columns[2].ItemStyle.CssClass = "mRows";
                    portafolios.Columns[3].ItemStyle.CssClass = "mRows";
                    

                    portafolios.HeaderStyle.CssClass= "GridViewHeaderStyle";
                    portafolios.FooterStyle.CssClass = "GridViewFooterStyle";
                    portafolios.PagerStyle.CssClass= "GridViewPagerStyle";
                    portafolios.RowStyle.CssClass="GridViewRowStyle";
                    portafolios.AlternatingRowStyle.CssClass ="GridViewAlternatingRowStyle";
                    portafolios.SelectedRowStyle.CssClass = "GridViewSelectedRowStyle";
                    portafolios.BackColor = System.Drawing.Color.White;
                    portafolios.BorderColor = System.Drawing.ColorTranslator.FromHtml("#c9ccd3");
                    portafolios.CellPadding = 3;
                    portafolios.ShowFooter = true;
                  
                   
                    portafolios.Width = Unit.Percentage(100);

                   
                    //portafolios.BorderStyle=  None;                   
                    //portafolios.GridLines = "Horizontal";                   
                    
                    
                    //portafolios.CssClass = "mGrid";

                    portafolios.RowCreated += new GridViewRowEventHandler(portafolios_RowCreated);

                    portafolios.RowDataBound += new GridViewRowEventHandler(portafolios_RowDataBound);
                  
                    portafolios.DataBind();
                                     
                    portafolios.Rows[0].Cells[0].Text = item.descripcion;
                    portafolios.Rows[0].Cells[0].RowSpan = portafolio.Count;

                    foreach (GridViewRow row in portafolios.Rows)
                    {
                        if (row.RowIndex != 0 && row.RowType != DataControlRowType.Header)
                        {
                            row.Cells.RemoveAt(0);
                        }
                    }
                    
                }
                
            }                                
        }
    }

    public void MostrarMensaje(string p_Mensaje, bool p_Exito)
    {
        lblMensajeError.Text = p_Mensaje;        
    }

    protected void portafolios_RowCreated(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.Cells[4].CssClass = "hiddencol";

            e.Row.Cells[5].CssClass = "hiddencol";
        }
        else if (e.Row.RowType == DataControlRowType.Header)
        {
            e.Row.Cells[4].CssClass = "hiddencol";

            e.Row.Cells[5].CssClass = "hiddencol";
        }
        else if (e.Row.RowType == DataControlRowType.Footer)
        {
            e.Row.Cells[4].CssClass = "hiddencol";

            e.Row.Cells[5].CssClass = "hiddencol";
        }

        
    }

    protected void portafolios_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            
                string idPortafolio = e.Row.Cells[4].Text;

                string idPortafolioUsuario = e.Row.Cells[5].Text;

                ((HyperLink)(e.Row.Cells[1].Controls[0])).NavigateUrl = "~/Portafolios/wfModificarPortafolio.aspx?idportafolio=" + idPortafolio
                                                                        + "&idportafoliousuario=" + idPortafolioUsuario + "&usuario=" + usuario.UserName; 

                ((HyperLink)(e.Row.Cells[3].Controls[0])).NavigateUrl = "~/PrincipalExterno.aspx?idPortafolio=" + idPortafolio+"&Tipo=Composicion";
                e.Row.Cells[1].HorizontalAlign = HorizontalAlign.Left;
                e.Row.Cells[3].HorizontalAlign = HorizontalAlign.Right;
        }        
    }
    protected void txtFecha_TextChanged(object sender, EventArgs e)
    {
        
    }
    protected void lbtnCambiarfecha_Click(object sender, EventArgs e)
    {
        DateTime fecha = Convert.ToDateTime(txtFecha.Text, myCulture);
        PortafolioSearchCriteria Busqueda = new PortafolioSearchCriteria(fecha)
        {
            NombreUsuarioExterno = usuario.UserName,
            ConsolidarPosiciones = true
        };

        ((SessionVariable)Session["variable"]).FechaPortafolio = fecha;
        MostrarBalance(null, new SearchEventArgs<PortafolioSearchCriteria>(Busqueda));
    }
}

  


    
